﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ModeloMagiPack.Entidades;
using DALMagiPack.Funcionalidad;

namespace BLLMagiPack.Managers
{
    public class BLLOrdenFacturaProveedor: BLLMagiPack
    {
        public bool EstaAsignadoProveedor(int idCheque, int? mes)
        {
            DALMagiPack<FacturaCheque> dalFacturaCheque = new DALMagiPack<FacturaCheque>();
            List<FacturaCheque> asignaciones = dalFacturaCheque.Traer(new FacturaCheque() { IdCheque = idCheque }, new List<Filtro>() { new Filtro() { Columna = NombresColumnas.IdCheque, Tipo = TipoFiltro.Equal } });

            DALMagiPack<OrdenFacturaProveedor> dalOrdenFacturaProveedor = new DALMagiPack<OrdenFacturaProveedor>();
            BLLFactura bllFactura = new BLLFactura();

            foreach (FacturaCheque item in asignaciones)
            {
                if (mes != null && bllFactura.TraerFactura(item.IdFactura).FechaEmision.Month != mes)
                    continue;

                if (dalOrdenFacturaProveedor.Contar(new OrdenFacturaProveedor() { IdFactura = item.IdFactura }, new List<Filtro>() { new Filtro(){ Columna = NombresColumnas.IdFactura, Tipo = TipoFiltro.Equal} }) > 0)
                    return true;
            }

            return false;
        }

        public bool EstaAsignadoProveedor(int idCheque)
        {
            return EstaAsignadoProveedor(idCheque, null);
        }

        public bool PoseeFacturaPorOrden(int idOrden)
        {
            DALMagiPack<OrdenFacturaProveedor> dalOrdenFactura = new DALMagiPack<OrdenFacturaProveedor>();
            OrdenFacturaProveedor filtro = new OrdenFacturaProveedor() { IdOrden = idOrden };
            List<Filtro> opciones = new List<Filtro>() { new Filtro() { Columna = NombresColumnas.IdOrden, Tipo = TipoFiltro.Equal } };
            return dalOrdenFactura.Contar(filtro, opciones) > 0;
        }

        public bool PoseeFacturasPorProveedor(int idProveedor)
        {
            DALMagiPack<Proveedor> dalProveedor = new DALMagiPack<Proveedor>();
            return dalProveedor.Contar(new Proveedor() { IdProveedor = idProveedor }, new List<Filtro>() { new Filtro(){ Columna = NombresColumnas.IdProveedor, Tipo = TipoFiltro.Equal} }) > 0;
        }

        public List<OrdenFacturaProveedor> Traer()
        {
            DALMagiPack<OrdenFacturaProveedor> dal = new DALMagiPack<OrdenFacturaProveedor>();
            return dal.Traer(new OrdenFacturaProveedor(), new List<Filtro>() { });
        }
    }
}
